<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>高阶函数的使用</title>
		<script src="../../vue/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div id="app">
			
		</div>
		<script type="text/javascript">
		/* 需求   求小于100的数   按照以前的做法*/
		var arr = [1,42,411,2311,29,454,131];
		var let =[];
		for(let n of arr){
			if(n <= 100){
				let.push(n);
			}
		}
		for(let n of let){
			console.log(n);
		}
		/* 使用高阶函数  filter  map   reduce */
		const ars = [21,63,23,464,242,144];
		/* filter中回调函数必须返回一个boolean值 
			当为truse时   将n这个值加入到新的数组中
			 当为false时   将这次n值过滤掉
		*/
		let newNum = ars.filter(function(n){//filter函数的使用
			/* return true; */
			return n < 100 ;
		});
		console.log(newNum);
		//map函数的使用	
		let newNum2 = newNum.map(function(n){
			return n*2 ;
		});
		console.log(newNum2);
		/* reduce作用是对数组7中所有的内容进行汇总 */
			
		let toal = newNum2.reduce(function(preValue,n){/* 有两个参数 */
			return preValue+n;
		},0);
		console.log(toal);
		/* 高阶用法   把上面的三个函数汇总成一个函数就行*/
		let sum = ars.filter(function(n){
			return n<100;
		}).map(function(n){
			return n*2;
		}).reduce(function(preValue,n){
			return preValue+n ;
		});
		/* 一行代码搞定  箭头函数 */
		let sums = ars.filter(n => n < 100).map(n => n*2).reduce((pre,n) => pre+n);
		console.log(sums);
		console.log(sum);
			var app = new Vue({
				el:'#app',
				data:{
					
				}
			});
	
		</script>
	</body>
</html>
